Windows 11 端末でコマンドプロンプトを使って psql コマンドだけをサイレントインストールしてみた
以前の記事では環境変数の設定に `SET` コマンドを使っていましたが、変更を永続化する `SETX` コマンドに差し替えました。
以前の記事では `--enable-components commandlinetools` の指定だけを紹介していましたが、これだけではすべてのコンポーネントがインストールされてしまうため、`--disable-components` でインストールしないコンポーネントの指定を追記しました。
コーヒーが好きな emi です。
私はクラスメソッドでは少なめの Windows ユーザーです。
以前社内の Slack で「Windows Servser に psql をインストールする際、インストーラーを使わないでインストールする方法はないですか?」という質問を見かけたので、手元の Windows 11 端末でコマンドプロンプトを使って psql コマンドだけをインストールしてみる実験をしてみました。
今回はサイレントインストールを実験します。サイレントインストールとは、セットアップウィザードの画面を表示せずにインストールを行う機能です。
psql コマンドのダウンロードリンクを確認
日本PostgresSQLユーザ会のサイトからダウンロードリンクを確認します。
ダウンロードタブを開きます。
OS から Windows を選択します。
「Download the installer」のリンクをクリックします。
EDB のサイトに移動します。PostgreSQL Version は 2023/3/14 時点で最新の15.2 をインストールしてみます。Windows x86-64 の下部のダウンロードボタンを右クリックし、「リンクのアドレスをコピー」をクリックします。
ダウンロードリンクhttps://sbp.enterprisedb.com/getfile.jsp?fileid=1258323
がコピーできました。このリンクはメモ帳などにメモしておきましょう。
コマンドプロンプトを管理者権限で開く
[スタート] をクリックし検索で「cmd」と入力するとコマンドプロンプトが表示されます。右クリックして「管理者として実行」を選択します。
psql コマンドのみインストールする手順
インストーラーのダウンロード
以下のコマンドでダウンロードします。
bitsadmin /TRANSFER <ジョブ名> /PRIORITY <優先度> <ダウンロードするファイルの URL> <ファイルの保存先>
ジョブ名
:任意の文字列を指定する。優先度
:高い順にFOREGROUND
、HIGH
、NORMAL
、LOW
が設定でき、デフォルトはNORMAL
になるダウンロードするファイルの URL
:psql コマンドのダウンロードリンクを確認でコピーしておいた URL を指定するファイルの保存先
:ファイル名まで指定する- 今回は C ドライブの下に work フォルダを作成し、
postgresql-15.2-1-windows-x64.exe
というファイル名で保存することにしたのでC:\work\postgresql-15.2-1-windows-x64.exe
と指定しました。
- 今回は C ドライブの下に work フォルダを作成し、
★実行コマンド
bitsadmin /TRANSFER dl-psql /PRIORITY NORMAL https://sbp.enterprisedb.com/getfile.jsp?fileid=1258323 C:\work\postgresql-15.2-1-windows-x64.exe
実行すると、以下のようにダウンロードのステータスが表示され、ダウンロードが進行します。最初は 10 days などと表示され「そんなにかかるの!?」と驚きましたが、私は 1~2 分程度でダウンロードが完了しました。
ダウンロードされたか確認します。cd
コマンドでダウンロードしたフォルダに移動します。
★実行コマンド
cd C:\work
dir
や tree /F
などのコマンドで、ファイルを表示します。
★実行コマンド
dir /B *.exe
★実行結果
C:\work>dir /B *.exe postgresql-15.2-1-windows-x64.exe C:\work>
postgresql-15.2-1-windows-x64.exe
が表示されれば、ダウンロードは成功しています。
サイレントインストール
それでは、psql コマンドのみインストールします。
★実行コマンド
postgresql-15.2-1-windows-x64.exe^ --mode unattended^ --unattendedmodeui none^ --prefix "C:\Program Files\PostgreSQL\15"^ --enable-components commandlinetools^ --disable-components server,pgAdmin,stackbuilder
★実行結果
C:\work>postgresql-15.2-1-windows-x64.exe^ More? --mode unattended^ More? --unattendedmodeui none^ More? --prefix "C:\Program Files\PostgreSQL\15"^ More? --enable-components commandlinetools^ More? --disable-components server,pgAdmin,stackbuilder C:\work>
実行後は何も表示されません。裏では psql コマンドのインストールが進んでおり、少し待つとインストールが完了します。
インストールは完了しましたが、まだ PATH を通していませんので、どこでも psql が実行できるわけではありません。
C:\work
フォルダで以下のように psql のバージョンを確認するコマンドを実行しても、うまくいきせん。
★実行コマンド
psql --version
★実行結果
C:\work>psql --version 'psql' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:\work>
PATH を設定する
「PATH を通す」とは、コマンドラインで実行できるプログラム(コマンド)を指定するための環境変数 PATH
に、特定のフォルダのパスを追加することを指します。
たとえば、あるフォルダにインストールされたプログラムをコマンドプロンプトや PowerShell から実行する場合、そのプログラムの実行ファイル(.exe)までのパスを指定する必要があります。これを毎回指定するのは手間がかかるため、そのフォルダのパスを環境変数の PATH
に追加することで、コマンドプロンプトや PowerShell からプログラムを実行できるようになります。
今回は、この PATH を通す作業もコマンドで実行していきます。
PATH を確認します。
★実行コマンド
echo %PATH%
★実行結果
C:\work>echo %PATH% C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Program Files\Cloudflare\Cloudflare WARP\;C:\Users\kitani.emi\AppData\Local\Microsoft\WindowsApps;C:\Users\kitani.emi\AppData\Local\Programs\Microsoft VS Code\bin C:\work>
PATHを設定します。
★実行コマンド
setx PATH "%PATH%;C:\Program Files\PostgreSQL\15\bin" /M
/M
オプション:システムの環境変数を設定するために指定する%PATH%;
:既存の PATH 値を保持しつつ、新しいパスを追加するために指定する"
で囲むのは、パスがスペースを含んでいるため
★実行結果
C:\work>set PATH=%PATH%;C:\Program Files\PostgreSQL\15\bin C:\work>
コマンドプロンプトを再起動して、システムの環境変数 PATH が更新されていることを確認します。 コマンドプロンプトを閉じて再度開くことで、新しい PATH 値が読み込まれます。
★実行コマンド
echo %PATH%
★実行結果
c:\work>echo %PATH% C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Program Files\Cloudflare\Cloudflare WARP\;C:\Users\kitani.emi\AppData\Local\Microsoft\WindowsApps;C:\Users\kitani.emi\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\PostgreSQL\15\bin; c:\work>
再度、psql のバージョンを確認します。
★実行結果
C:\work>psql --version psql (PostgreSQL) 15.2 C:\work>
psql コマンドで、バージョン確認ができました。
終わりに
Windows 11 端末でコマンドプロンプトを使って psql コマンドだけをインストールしてみました。興味本位の実験でしたが、どなたかのお役に立てば幸いです。
余談
クラスメソッドのエンジニアは基本的に貸与 PC を使うのですが、私の入社時は MacBook Pro と Surface Laptop が選択できました。多くのメンバーが Mac を選択するようですが、私は今までずっと Windows で生きてきましたので、仕事をする際に慣れない OS で手こずるくらいならばと Windows を選びました。Windows 勢のみなさん、仲良くしてください。
ぶっちゃけ Mac は憧れています。